package com.itheima.serviceimpl;

import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.constant.Port;
import com.itheima.dao.CheckitemDao;
import com.itheima.dao.PortCount;
import com.itheima.entity.PageResult;
import com.itheima.pojo.CheckItem;
import com.itheima.service.CheckitemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service(interfaceClass = CheckitemService.class)
@Transactional //事务
public class CheckitemServiceimpl implements CheckitemService {

    @Autowired
    private CheckitemDao checkitemDao;

    @Autowired
    private PortCount portCount;

    //添加检查项 Service实现类
    @Override
    public void add(CheckItem checkItem) {
        checkitemDao.add(checkItem);
        //记录该接口被调用
        portCount.portCount(Port.ADD_CHECKITEM);

    }
//查询所有检查项
    @Override
    public PageResult queryAll(Integer currentPage, Integer pageSize, String queryString) {

        PageHelper.startPage(currentPage,pageSize);
        Page<CheckItem> page = checkitemDao.queryAll(queryString);
        //记录该接口被调用
        portCount.portCount(Port.QUERT_CHECKITEM);
        return new PageResult(page.getTotal(),page.getResult());


    }

//    @Override
//    public Integer queryById(Integer id) {
//        Integer integer = checkitemDao.queryById(id);
//
//
//        return null;
//    }

    //删除检查项
    @Override
    public boolean DeleteById(Integer id) {

        //查询该检查项是否被其他检查组引用
        Integer integer = checkitemDao.queryById(id);
        //记录该接口被调用
        portCount.portCount(Port.DELETE_CHECKITEM);

        if(integer!=0){
            //其他检查组中 有 该检查项
            return false;
        }else {
            //其他检查组中 没有 该检查项
            checkitemDao.DeleteById(id);
            return true;
        }

    }

    //根据ID查询该检查项
    @Override
    public CheckItem qurey(Integer id) {
        CheckItem qurey = checkitemDao.qurey(id);

        //记录该接口被调用
        portCount.portCount(Port.QUERT_CHECKITEM);

        return qurey;
    }


    //修改检查项
    @Override
    public void Update(CheckItem checkItem) {

        //记录该接口被调用
        portCount.portCount(Port.UPDATE_CHECKITEM);
        checkitemDao.Update(checkItem);

    }






}
